from parse.symbol_table.function import Function
from parse.symbol_table.variable import Variable
from parse.symbol_table.void_variable import VoidVariable
from lexer.token.token_type import TokenType
from parse.symbol_table.function import Function
from parse.symbol_table.variable import Variable
from parse.symbol_table.pointer import Pointer
from parse.symbol_table.array import Array
from parse.symbol_table.constant_variable import ConstantVariable

class SymbolTable:
    voidVar = VoidVariable()

    def __init__(self):
        self.variableTable = {}
        self.functionTable = {}
        self.strTable = {}
        self.currentFunction = None
        self.scopeId = 0
        self.scopePath = []
        self.funcList = []

    def addVariable(self, variable: Variable):
        # TODO
        pass

    def getVariable(self, name: str) -> Variable:
        return None

    def addString(self, string: Variable):
        pass

    def addFunction(self, function: Function):
        pass

    def endDefineFunction(self):
        pass

    def enter(self):
        # TODO
        pass

    def leave(self):
        # TODO
        pass

    def getScopePath(self):
        # TODO
        pass

    def over(self):
        """
        进行追踪的校验以及静态数据的生成
        """
        pass
